'use strict';
const fs = require('fs');

/*

// 异步读取文件
fs.readFile('./sample.txt', 'utf-8', (err, data) => {
    if (err) {
        console.log(err)
    } else {
        console.log(data)
    }
})

// 异步读取图片
fs.readFile('./img.png', (err, data) => {
    console.log(data)
})

// 同步读取文件
var data = fs.readFileSync('./sample.txt', 'utf-8')
console.log(data)

try {
    // 同步读取文件捕获异常的方法
    var data2 = fs.readFileSync('./sample.txt1', 'utf-8');
    console.log(data2)
} catch (e) {
    console.log(e)
}

// 异步写入文件
fs.writeFile('./sample.txt', '测试写入', function(err) {
    console.log(err)
})
// 同步写入文件
fs.writeFileSync('./sample.txt', '写入222')

console.clear()
 */

// 获取文件属性

fs.stat('./sample.txt', function(err, stat) {
    if (err) {
        console.log(err)
    } else {
        console.log(`是否是文件: ${stat.isFile()}`);
        console.log(`是否是文件夹: ${stat.isDirectory()}`);
        if (stat.isFile()) {
            console.log(`文件大小: ${stat.size}`)
            console.log(`创建时间: ${stat.birthtime}`)
            console.log(`修改时间: ${stat.mtime}`)
        }
    }
})

const stat = fs.statSync('./sample.txt');
console.log(stat);

/**
 * 虽然node 提供了 IO 操作的同步方法,但是 在项目开发中,只能使用异步方法.因为node 是单线程执行,只有在node服务启动或者关闭时可以使用.
 * node提供同步读写操作只是为了方便
 */